package red.stu.pconstraint.annotation;

import java.lang.annotation.*;

/**
 * 流程模版分支 <br/>
 *      - 用于指定当前处理程序所属的流程分支，
 *        配合{@link ProcessNode}{@link ProcessTimerNode}使用 <br/>
 *
 * @author yihrmc@stu.red
 * @date 2019/11/13 16:38
 */
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ProcessBranch {

    @AliasFor("branchId")
    String value() default "master";

    /**
     *  流程模版分支ID
     * @return
     */
    @AliasFor("value")
    String branchId() default "master";

    /**
     * 流程模版ID <br/>
     *      - 如果为空则使用当前所处类类名
     * @return
     */
    String processId() default "";

    /**
     * 流程模版ID <br/>
     *      - 如果{@link #processId}为空，则通过类名指定流程模版ID
     * @return
     */
    Class<?> processIdClass() default Void.class;

}
